package com.shiliuzi.www.pojo.bo;

import com.shiliuzi.www.pojo.po.Power;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Data
@Slf4j
@AllArgsConstructor
public class PowerBo {
    private static Integer id;

    /**
     * 用户权限总览
     */
    private static List<Power> powers;

    /**
     * 查询该用户是否有权限
     * @param id
     * @return
     */
    public static boolean collatePower(Integer id) {
        if (powers == null) return false;
        for(Power power : powers) {
            log.info("现在是{}号权限！校验{}号权限！",power.getPowerId(),id);
            if (power.getPowerId().equals(id)) return true;
        }
        return false;
    }

    /**
     * 设置用户权限
     * @param userId
     * @param userPowers
     * @return
     */
    public static boolean obtainPower(Integer userId, List<Power> userPowers) {
        if(id != null || powers != null) return false;
        id = userId;
        powers = userPowers;
        return true;
    }

    /**
     * 登出清除power
     * @return
     */
    public static boolean clearPower() {
        if(id==null || powers==null) return false;
        id = null;
        powers = null;
        return true;
    }

//    private static Map<Integer, List<Power>> powerMap = new ConcurrentHashMap<>();
//
//    /**
//     * 查询该用户是否有权限
//     * @param id
//     * @return
//     */
//    public static boolean collatePower(Integer id) {
//        List<Power> powers =  powerMap.get(UserInfoBo.obtainUser().getId());
//        if(powers==null) return false;
//        for(Power power : powers) {
//            log.info("现在是{}号权限！校验{}号权限！",power.getPowerId(),id);
//            if (power.getPowerId().equals(id)) return true;
//        }
//        return false;
//    }
//
//    /**
//     * 设置用户权限
//     * @param userId
//     * @param userPowers
//     * @return
//     */
//    public static boolean obtainPower(Integer userId, List<Power> userPowers) {
//        if(userPowers==null || userId==null) return false;
//        powerMap.put(userId,userPowers);
//        return true;
//    }
//
//    /**
//     * 登出清除power
//     * @return
//     */
//    public static boolean clearPower() {
//        Integer userId = UserInfoBo.obtainUser().getId();
//        powerMap.remove(userId);
//        if(powerMap.get(userId)!=null) return false;
//        return true;
//    }
}
